苦苦挣扎的正则表达式要求.我需要将字符串拆分成数组,无论它在哪里找到正斜杠.但是如果正斜杠之前是逃避的话.
例如,如果我有这个字符串:
hello/world
Run Code Online (Sandbox Code Playgroud)
我希望将它分成如下数组:
arrayName[0] = hello
arrayName[1] = world
Run Code Online (Sandbox Code Playgroud)
如果我有这个字符串:
hello/wo\/rld
Run Code Online (Sandbox Code Playgroud)
我希望将它分成如下数组:
arrayName[0] = hello
arrayName[1] = wo/rld
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有一个可拖动列表(.field),您可以将项目拖放到可排序列表(.sortlist)中.我是这样做的,因为我不希望主列表(.field)以任何方式改变.它工作正常,除了我无法弄清楚如何操作可排序列表中的删除字段.
我可以通过在droppable()中的'drop:'函数中使用以下函数从可拖动区域到可放置区域执行此操作:
$(this).append('html code here to change content of dragged field');
Run Code Online (Sandbox Code Playgroud)
但是这在sortable()中不起作用.我的代码看起来像这样:
$(".sortlist").sortable({
receive: function(event, ui) {
var dropElemTxt = $(ui.item).text();
var dropElemId = $(ui.item).attr('id');
$(ui.item).replaceWith('<li class="box" id="'+dropElemId+'">Updated field! '+dropElemTxt+'</li>');
}
});
Run Code Online (Sandbox Code Playgroud)
$(ui.item).replaceWith更改正在拖动的主字段,因此这不起作用.我尝试了$(this).replaceWith,但更新了可排序区域(.sortlist).
知道我需要什么代码来引用被拖动的项目吗?
非常感谢,阿里.
我有一些拖放代码,它可以正常工作.只是有一点询问.我发现,如果我调试目的降函数中添加一个通知(如警报(draggedItem.text());),它触发警报两次当我把东西放到可拖动区域.我在另一篇文章中读到,使用droppable和sortable一起导致这个奇怪的双重事件发生.但我需要使用droppable事件来获取拖动的项目对象(ui.draggable) - 这样我就可以在删除它时操作它.如果有任何其他方式获得可拖动对象,请告诉我:)如果你有解释为什么会发生这种情况,那将是有趣的...
$(".field > li").draggable({
helper:'clone',
opacity: 0.4,
connectToSortable:'.dragrow'
});
$(".dragrow").droppable({
drop: function(e, ui) {
draggedItem = ui.draggable;
//alert(draggedItem.text());
}
}).sortable({ //code here to do stuff with 'draggedItem'
Run Code Online (Sandbox Code Playgroud)
我还有另一个与此相关的查询,但由于我的代码很大,我无法在这里发布完整的内容.所以我明白,如果你无法提供帮助 - 只要有些事情让人想起来真的很酷.基本上我有一个'块'列表,我可以拖动到多行.可以使用toggle事件隐藏各个行.如果我有3行,我可以将块拖动到其中任何一行.如果我然后隐藏第一个,我现在无法拖入另外两行.我仍然可以对它们进行排序.一旦我开始对它们进行排序,我就可以再次拖入它们.奇怪的...
我需要在大括号之间获取文本(如果有的话).我确实找到了这个其他帖子,但从技术上讲,它没有正确回答: 正则表达式提取方形或大括号之间的文本
它实际上没有说明如何实际提取文本.所以我到目前为止:
var cleanStr = "Some random {stuff} here";
var checkSep = "\{.*?\}";
if (cleanStr.search(checkSep)==-1) { //if match failed
alert("nothing found between brackets");
} else {
alert("something found between brackets");
}
Run Code Online (Sandbox Code Playgroud)
然后我如何从字符串中提取"东西"?而且如果我进一步考虑,我如何从这个字符串中提取'stuff'和'sentence':
var cleanStr2 = "Some random {stuff} in this {sentence}";
Run Code Online (Sandbox Code Playgroud)
干杯!
我有一个正则表达式,如果没有后跟其中一个字符,则从字符串中删除任何反斜杠:\ /或}.
它应该变成这个字符串:
foo\bar\\batz\/hi
Run Code Online (Sandbox Code Playgroud)
进入:
foobar\\batz\/hi
Run Code Online (Sandbox Code Playgroud)
但问题在于它正在处理每个反斜杠.因此它遵循规则,因为它删除了第一个反斜杠,并忽略第二个反斜杠,因为它后跟另一个反斜杠.但当它到达第3个时,它会删除它,因为它不会被另一个跟随.
我当前的代码如下所示: str.replace(/\\(?!\\|\/|\})/g,"")
但结果字符串如下所示: foobar\batz\/hi
如何让它跳过第3个反斜杠?或者这是一种做某种明确的否定搜索和替换类型的事情?例如.替换'\',但不要替换'\\','\ /'或'\}'?
请帮忙!:)
编辑
对不起,我应该解释一下 - 我使用的是javascript,所以我不认为我可以做负面的lookbehinds ...
我有一些代码从另一个文件中加载一些html,它可以正常工作.但我正在努力从这个新加载的数据中访问元素.
我有这个代码:
var widgetSettings = $("<div>").addClass("widgetsettings").load('dashboard/chart-settings-form.php #editChartForm');
widgetSettings.appendTo(widget.element);
//so far so good...
widget.element.find('.date').each(function(i){
$(this).datetimepicker(); //this doesn't work
console.log('testing... '+$(this).attr('id')); //this doesn't even work...
});
Run Code Online (Sandbox Code Playgroud)
我希望它能从上面的url(它们在一个表中)中加载'#editChartForm'表单中找到这些文本框:
<input type="text" name="datefrom" id="datefrom" class="date" /> To: <input type="text" name="dateto" id="dateto" class="date" />
Run Code Online (Sandbox Code Playgroud)
html肯定被加载了.真的很困惑为什么我无法访问load()事件中的任何元素.
我还想在同一个表单上的单击功能应用取消按钮,我发现使其工作的唯一方法是在加载前将其置于"实时"功能中:
$('.cancel').live('click', function() {
//actions here...
});
Run Code Online (Sandbox Code Playgroud)
有什么想法发生了什么?
我有一个表使用tablesorter插件成功排序.但是,我想突出显示特定行中特定文本字段中的文本.它有一个唯一的ID,但是当我将代码放在排序代码之后它不起作用.这是我的代码:
jQuery(document).ready(function() {
jQuery("#filetable").tablesorter({
sortList: [[3,1]],
widgets: ['zebra'],
testExtraction: "complex"
});
//my new code which doesn't work as expected
if(jQuery("#new_foldername").length > 0){
jQuery("#new_foldername").focus(function() { jQuery(this).select(); } );
}
});
Run Code Online (Sandbox Code Playgroud)
如果我在检查之后粘贴警报以查看#new_foldername是否存在,我会看到警报,并且我看到背景中突出显示的文本(因此我的代码突出显示文本有效).当我单击以关闭警报时,表格将完成排序...并且文本不再突出显示.
有什么想法可能会发生什么?
我知道在AngularJS应用程序中不使用jQuery是一种很好的做法,但是努力解决AngularJS这样做的方法:
$scope.clickEvent = function(event) {
if($(event.target).hasClass('icon-closed')) {
$(event.target).removeClass('icon-closed')
$(event.target).addClass('icon-opened')
} else {
$(event.target).removeClass('icon-opened')
$(event.target).addClass('icon-closed')
}
}
Run Code Online (Sandbox Code Playgroud)
我的HTML:
<div class="component-title icon-closed"
ng-model="collapsed"
ng-click="collapsed=!collapsed;clickEvent($event)">{{component.name}}</div>
Run Code Online (Sandbox Code Playgroud)
该collapsed
代码显示/隐藏面板,并在div是内ng-repeat
循环,所以没有什么与做clickEvent
功能.
我希望我能从事件对象中获取类名并在不使用jQuery的情况下更改它们.有任何想法吗?
谢谢 :)
我似乎无法将元素拖动到可初始状态为隐藏的可排序列表(即display:none).
每行的html如下所示:
<div class="dragbox" id="item1" >
<h2>Expression 1<span id="exp1"></span></h2>
<div class="dragbox-content" >
<ul class="dragrow1"></ul>
<ul class="dragrow2"></ul>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但是为了使一个字段能够被放入'dragrow*',div'dragbox-content'必须具有'display:block'的样式.这可以用主css样式编写,也可以硬编码到div本身(例如).
麻烦的是,在页面加载时,你有点想要关闭所有行(或者至少除了一行之外).这意味着'display'应该最初设置为'none'.这部分很容易.一些jQuery可以在ready()事件中的页面加载时更改此css:
$('.dragbox')
.each(function(){
$(this).find('.dragbox-content').hide();
});
Run Code Online (Sandbox Code Playgroud)
还有一个名为"toggle"的jQuery命令,当你单击h2标签时,会自动在block&none之间交换这个css显示.所以我可以显示或隐藏每一行.
因此......如果在ready()事件中显示了一行(display:block),则可以将项目拖动到可排序列表中(即使您在显示和隐藏行之间切换).
但是......如果在ready()事件中隐藏了一行(display:none),则无法将项目拖动到可排序列表中.
有任何想法吗?真的卡在这一个......
我有一些函数,我在ready()事件中加载.这些基本上使列表可拖动,其他区域可放置/可排序.例如.您可以将克隆拖动到多个区域(div中的列表),并且在这些多个区域内,您可以对它们进行排序/重新排序(但仅限于每个区域内).这非常有效.
我有一个按钮,动态地为要放入的项目创建一个新区域,然后进行排序.它完美地创建了新区域,但是您不能将项目放入其中,或者甚至使它们可以排序.
我意识到这与我使用ready()事件在页面加载时使所有区域都可以删除/排序这一事实有关,并且实际上并没有动态地重新运行这些函数.
我尝试在按钮的单击功能中对这些元素使用'刷新'.例如.
$(".field > li").draggable('refresh');
$(".dragrow1, .dragrow2").droppable('refresh');
$(".dragrow1, .dragrow2").sortable('refresh');
Run Code Online (Sandbox Code Playgroud)
但这不起作用.如果我能提供帮助,我想避免以任何方式重复我的代码.有没有办法使这项工作?我认为,如果有类似'live()'函数的东西,你可以使用'ready()',那么这可能是一个解决方案,但不是......!
谢谢.
希望我的标题解释好吧!这里有更多细节:
我正在创建一个存储键及其值的数组.例如.
test1 = hello
test2 = world
test3 = foo
Run Code Online (Sandbox Code Playgroud)
计算下一个键的最简洁方法是什么?假设我会知道第一部分是"测试",但我不知道最高值是多少.显然,在这种情况下,我希望它被称为'test4'.
在下面的示例中,我希望下一个键为'test46',因为它是下一个最高值:
test6 = blah
test45 = boo
test23 = far
Run Code Online (Sandbox Code Playgroud)